package pincipal.pack;

import java.util.ArrayList;

import org.htmlparser.util.NodeList;

import partidas.Partida;

import materiales.Material;
import database.Consulta;
import database.Parseador;
//import database.Parser;
import Presupuesto.Presupuesto;
import android.app.Activity;
import android.app.ProgressDialog;

import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;


public class CubicMagic extends Activity {

	private Button materiales;
	private String tipo = "";
	private Button partidas;
	private Button presupuestos;
	private Button calculos;
	private ProgressDialog pd = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature( Window.FEATURE_NO_TITLE );
        setContentView(R.layout.main);
        
        materiales = (Button)findViewById(R.id.botonMateriales);
        partidas = (Button)findViewById(R.id.botonPartidas);
        presupuestos = (Button)findViewById(R.id.botonPresupuestos);
        calculos = (Button)findViewById(R.id.botonConfiguraciones);
        inicializarIdentificadores();
        
        this.materiales.setOnClickListener( new OnClickListener()
        {
        	public void onClick(View v)
        	{
        		tipo = "material";
        		llamarDialog();
        	}
        	
        });
        
        this.partidas.setOnClickListener( new OnClickListener()
        {
        	public void onClick(View v)
        	{
        		tipo = "partida";
        		llamarDialog();
        	}     	
        });
        
        this.presupuestos.setOnClickListener( new OnClickListener()
        {    	
        		public void onClick(View v)
            	{
        			tipo = "presupuesto";
        			llamarDialog();

            	}     	
       	 });
        
        this.calculos.setOnClickListener(new OnClickListener()
        {
			public void onClick(View arg0) {
				tipo = "calculo";
				llamarDialog();				
			}       	
        });   
        
    }
    
    private void inicializarIdentificadores()
    {
    	String material1 = "material";
    	String partida1 = "partida";
    	String presupuesto1 = "presupuesto";
    	Cursor material = Consulta.consultIdentificador(CubicMagic.this, "'"+material1+"'");
    	Cursor partida = Consulta.consultIdentificador(CubicMagic.this, "'"+partida1+"'");
    	Cursor presupuesto = Consulta.consultIdentificador(CubicMagic.this, "'"+presupuesto1+"'");
    			
    	if ( material.getCount() == 0)
    	{
    		Consulta.insertIdentificador(CubicMagic.this, 0, "material");
    	}
    	if ( partida.getCount() == 0)
    	{
    		Consulta.insertIdentificador(CubicMagic.this, 0, "partida");
    	}
    	if ( presupuesto.getCount() == 0)
    	{
    		Consulta.insertIdentificador(CubicMagic.this, 0, "presupuesto");
    	}   
    }
    
    @Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.layout.layout_configuraciones, menu);
	    
	    return true;
	}
	
	@Override
    public boolean onOptionsItemSelected(MenuItem item) {
		
        switch (item.getItemId()) {   
	        case R.id.configuraciones:
	        	
	        	Intent intent = new Intent(CubicMagic.this, Configuraciones.class);
	        	startActivity(intent);
	            return true;
	        default:
	            return super.onOptionsItemSelected(item);
        }
    }
	
	public boolean verificarConexion() 
	{
		ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
		 return cm.getActiveNetworkInfo().isConnectedOrConnecting();
		 
	}
	
	private class DownloadTask extends AsyncTask<String, Void, Object> {
        protected String doInBackground(String... args) {
            
        	if (tipo.equals("material"))
            {
            	abrirMateriales();
            }
            else if (tipo.equals("partida"))
            {
            	abrirPartidas();
            }
            else if (tipo.equals("presupuesto"))
            {
            	abrirPresupuestos();
            }
            else
            {
            	Intent intent = new Intent(CubicMagic.this, PesoEspecifico.class);     		
        		startActivity(intent);
            }
            	
            return "Datos ya procesados (resultado)";
        }

        protected void onPostExecute(Object result) {
            if (CubicMagic.this.pd != null) {
            	CubicMagic.this.pd.dismiss();
            }
        }
   }
	
	private void llamarDialog()
	{
		pd = ProgressDialog.show(this, "Cargando", "Por favor espere...", true, false);
		new DownloadTask().execute("Parametros que necesite el DownloadTask");
	}
	
	private void abrirMateriales()
	{
		Cursor fila =(Cursor)Consulta.consultMateriales(CubicMagic.this);
		String[] lista = new String[]{};
		lista = new String[fila.getCount()];
		ArrayList<Material> arrayMat = new ArrayList<Material>();
		int i = 0;
		if (fila.moveToFirst())
        {
        	do {
    
        		lista[i] = fila.getString(1);
        		arrayMat.add(arrayMat.size(), new Material( fila.getInt(0), fila.getString(1), fila.getString(2), fila.getString(3), fila.getString(4)));
                i++;
           } while(fila.moveToNext());    	
        } 	
		Bundle bundleMaterial = new Bundle();
		bundleMaterial.putStringArray("LISTA", lista);
		bundleMaterial.putString("TIPO", "material");
		bundleMaterial.putSerializable("ARRAY", arrayMat);
		Intent intent = new Intent(CubicMagic.this, Buscar.class);
		intent.putExtras(bundleMaterial);       		
		startActivity(intent);
	}
	
	private void abrirPartidas()
	{
		Cursor fila =(Cursor)Consulta.consultPartidas(CubicMagic.this);
		String[] lista = new String[]{};
		lista = new String[fila.getCount()];
		ArrayList<Partida> array = new ArrayList<Partida>();
		int i = 0;
		Partida partida;
		if (fila.moveToFirst())
        {
        	do {
    
        		lista[i] = fila.getString(1);
        		String nombrePartida = fila.getString(1);
        		partida = new Partida(fila.getInt(0), nombrePartida , fila.getString(2));     		
        		array.add(array.size(), partida );
                i++;
                Cursor materiales =(Cursor)Consulta.consultMaterialesPartida(CubicMagic.this, nombrePartida);
                if (materiales.moveToFirst())
                {
                	do {
                		String material = materiales.getString(1);
                		String rendimiento = materiales.getString(2);
                		partida.setMaterial(material, rendimiento);                                     
                   } while(materiales.moveToNext());    	
                }    
           } while(fila.moveToNext());    	
        } 	
		Bundle bundleMaterial = new Bundle();
		bundleMaterial.putStringArray("LISTA", lista);
		bundleMaterial.putString("TIPO", "partida");
		Intent intent = new Intent(CubicMagic.this, Buscar.class);
		intent.putExtra("ARRAY",array);
		intent.putExtras(bundleMaterial);       		
		startActivity(intent);
	}
	
	private void abrirPresupuestos()
	{
		Cursor fila =(Cursor)Consulta.consultPresupuestos(CubicMagic.this);
		String[] lista = new String[]{};
		lista = new String[fila.getCount()];
		ArrayList<Presupuesto> array = new ArrayList<Presupuesto>();
		int i = 0;
		Presupuesto presupuesto;
		if (fila.moveToFirst())
        {
        	do {               
        		lista[i] = fila.getString(2);
        		String nombrePresupuesto = fila.getString(2);
        		presupuesto = new Presupuesto(nombrePresupuesto , fila.getString(1));     		
        		array.add(array.size(), presupuesto);
                i++;
                Cursor partidas =(Cursor)Consulta.consultPartidasPresupuesto(CubicMagic.this, nombrePresupuesto);
                if (partidas.moveToFirst())
                {
                	do {
                		String partida = partidas.getString(1);
                		presupuesto.setPartida(partida, partidas.getString(2));   
                		
                   } while(partidas.moveToNext());    	
                }    
           } while(fila.moveToNext());    	
        } 	
		Bundle bundleMaterial = new Bundle();
		bundleMaterial.putStringArray("LISTA", lista);
		bundleMaterial.putString("TIPO", "presupuesto");
		Intent intent = new Intent(CubicMagic.this, Buscar.class);
		intent.putExtra("ARRAY",array);
		intent.putExtras(bundleMaterial);       		
		startActivity(intent);
	}
	
}